package vip.zhenzicheng.algorithm.leetcode.dp;

/**
 * <a href="https://leetcode.cn/problems/fibonacci-number/">斐波那契数 [简单]</a>
 *
 * @author zhenzicheng
 * @date 2022-06-14 11:34
 */
public class FibonacciNumber_509 {

  /*递归方法*/
  // public int fib(int n) {
  //   if (n == 0) {
  //     return 0;
  //   }
  //   if (n == 1) {
  //     return 1;
  //   }
  //   return fib(n - 1) + fib(n - 2);
  // }

  /*迭代*/
  // public int fib(int n) {
  //   if (n <= 1) {
  //     return n;
  //   }
  //   int result = 0;
  //   int pre = 1, prepre = 0;
  //   for (int i = 2; i <= n; i++) {
  //     result = pre + prepre;
  //     prepre = pre;
  //     pre = result;
  //   }
  //   return result;
  // }

  /*动态规划*/
  public int fib(int n) {
    if (n <= 1) {
      return n;
    }
    int[] dp = new int[n + 1];
    dp[0] = 0;
    dp[1] = 1;
    for (int i = 2; i <= n; i++) {
      dp[i] = dp[i - 1] + dp[i - 2];
    }
    return dp[n];
  }

}
